# 定义变量
info1 = "D:\tools\noco"
info2 = r"D:\tools\noco"
info3 = "D:\\tools\\noco"
info4 = '张三说："你很厉害"'
print(info1) # 字符串中有转义字符，不能原样输出
print(info2)
print(info3)
print(info4)
# \n 表示换行
# \t 表示执行TAB
# 问题1：路径想原样输出,在字符串外面添加字母 r，或者在有转义字符的地方添加 \
# 问题2：字符串中本身存在单双引号的情况，需要交叉输入引号


# 字符串的使用
# 1.通过位置（下标）找元素
# 定义变量
info = "abcdefg"
# 获取字母d
print(info[3])
# print(info[‐4])
# 2.通过元素找位置（下标）
# 字母e在哪个位置？
print(info.find("e"))
# 字母k在哪个位置？
print(info.find("k")) # 如果找不到返回‐1


# 字符串替换
# 定义字符串
# 字符串替换操作示例

# 定义一个原始字符串
info = "金三胖同志被称之为世界最成功的80后，金三胖真牛！"

# 使用replace()方法替换字符串中的内容：将"金三胖"替换为"马赛克"
# 注意：replace()会返回一个新的字符串，原字符串不会被修改
info1 = info.replace("金三胖", "马赛克")

# 打印替换后的新字符串
print(info1)  # 输出：马赛克同志被称之为世界最成功的80后，马赛克真牛！

# 打印原始字符串（验证是否被修改）
print(info)   # 输出：金三胖同志被称之为世界最成功的80后，金三胖真牛！

# 结论：
# 字符串是不可变数据类型，执行替换等操作后，原有字符串内容不会改变
# 所有对字符串的修改操作，都会返回一个新的字符串


# 字符串拆分
# 定义一个SQL语句字符串（包含大小写和特殊符号）
sql = "SelECt * from students where id = 001;"

# 使用split()方法拆分字符串：不指定分隔符时，默认按空格拆分
# 拆分后返回一个列表，包含拆分后的所有单词
print(sql.split())  # 输出：['SelECt', '*', 'from', 'students', 'where', 'id', '=', '001;']

# 遍历拆分后的列表：用for循环逐个取出列表中的元素（单词）并打印
for i in sql.split():
    print(i)  # 依次输出每个拆分后的单词


# 使用split("where")拆分字符串：指定以"where"为分隔符
# 拆分后返回一个列表，包含分隔符前后的两部分内容
print(sql.split("where"))  # 输出：['SelECt * from students ', ' id = 001;']


# 总结：
# 1. split()方法拆分字符串后，结果是列表类型
# 2. 不输入分隔符时，默认按空格拆分（连续空格会被视为一个分隔符）
# 3. 输入具体分隔符（如"where"）时，按该字符拆分字符串

# 字符串其他操作
# 1. 去除字符串两端的空格（使用strip()方法）
phone = " 13800000001 "  # 字符串前后有空格
print(phone)  # 打印原始字符串（带空格）
print(phone.strip())  # 打印去除两端空格后的字符串


# 2. 字符串大小写转换
# 定义一个混合大小写的SQL语句
sql = "SelECt * from students where id = 001;"

# 判断语句是否为查询（包含select）：先转小写再判断，避免大小写影响
# lower()将字符串转小写，"select" in ... 检查是否包含该关键词
if "select" in sql.lower():
    print("显示查询结果")  # 包含select，执行查询逻辑
else:
    print("非查询")  # 不包含select


